package com.cloud.utils.common;



import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;

/**
 * 获取到当前系统数据
 * ClassName:SystemMsg <br/>
 * Date:     2019年10月2日 下午10:50:36 <br/>
 * @author   monxz
 * @version

 */
public class SystemMsg {


    public static Map<String, Object> getIpconfig() {
        Map<String, Object> res = new HashMap<String, Object>();
        Map<String, String> map = System.getenv();
        res.put("用户名：", map.get("USERNAME"));
        res.put("电脑名：", map.get("COMPUTERNAME"));
        res.put("计算机域名：", map.get("USERDOMAIN"));
        return res;
    }


    //得到计算机的ip,名称,操作系统名称,操作系统版本
    @SuppressWarnings({"resource","unused"})

    public static Map<String, Object>  getSystemConfig() {
        Map<String, Object>  map=new HashMap<String, Object>();
        try {
            InetAddress addr = InetAddress.getLocalHost();
            String ip = addr.getHostAddress().toString(); //获取本机ip
            String hostName = addr.getHostName().toString(); //获取本机计算机名称
            map.put("本机名称：",  hostName);
            map.put("本机IP：",  ip);
            Properties props = System.getProperties();

            map.put("操作系统的名称：",  props.getProperty("os.name"));
            map.put("操作系统的版本", props.getProperty("os.version"));

            NetworkInterface ni = NetworkInterface.getByInetAddress(addr);
            byte[] mac = ni.getHardwareAddress();


            String sMAC = "";

            Formatter formatter = new Formatter();
            for (int i = 0; i < mac.length; i++) {
                sMAC = formatter.format(Locale.getDefault(), "%02X%s", mac[i],
                        (i < mac.length - 1) ? "-" : "").toString();
            }
            map.put("MAC：", mac);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return  map;
    }
    public static Map<String, Object> getAll() {
        Map<String, Object>  map=new HashMap<String, Object>();
        Properties props = System.getProperties();
        map.put("Java的运行环境版本：" ,props.getProperty("java.version"));
        map.put("Java的运行环境供应商：" , props.getProperty("java.vendor"));
        map.put("Java供应商的URL：" , props.getProperty("java.vendor.url"));
        map.put("Java的安装路径：" , props.getProperty("java.home"));
        map.put("Java的虚拟机规范版本：" , props.getProperty("java.vm.specification.version"));
        map.put("Java的虚拟机规范供应商：" , props.getProperty("java.vm.specification.vendor"));
        map.put("Java的虚拟机规范名称：" , props.getProperty("java.vm.specification.name"));
        map.put("Java的虚拟机实现版本：" , props.getProperty("java.vm.version"));
        map.put("Java的虚拟机实现供应商：" , props.getProperty("java.vm.vendor"));
        map.put("Java的虚拟机实现名称：" , props.getProperty("java.vm.name"));
        map.put("Java运行时环境规范版本：" , props.getProperty("java.specification.version"));
        map.put("Java运行时环境规范供应商：" , props.getProperty("java.specification.vender"));
        map.put("Java运行时环境规范名称：" , props.getProperty("java.specification.name"));
        map.put("Java的类格式版本号：" , props.getProperty("java.class.version"));
//	        map.put("Java的类路径：" , props.getProperty("java.class.path"));

        map.put("默认的临时文件路径：" , props.getProperty("java.io.tmpdir"));
        map.put("一个或多个扩展目录的路径：" , props.getProperty("java.ext.dirs"));
        map.put("操作系统的名称：" , props.getProperty("os.name"));
        map.put("操作系统的构架：" , props.getProperty("os.arch"));
        map.put("操作系统的版本：" , props.getProperty("os.version"));
        map.put("文件分隔符：" , props.getProperty("file.separator"));
        //在 unix 系统中是＂／＂
        map.put("路径分隔符：" , props.getProperty("path.separator"));
        //在 unix 系统中是＂:＂
        map.put("行分隔符：" , props.getProperty("line.separator"));
        //在 unix 系统中是＂/n＂
        map.put("用户的账户名称：" , props.getProperty("user.name"));
        map.put("用户的主目录：" , props.getProperty("user.home"));
        map.put("用户的当前工作目录：" , props.getProperty("user.dir"));
        return map;
    }


    public static Map<String, Object> getSystem() {
        Map<String, Object>  map=new HashMap<String, Object>();
        map.put("JVM信息：", getAll());
        map.put("网络信息：", getIpconfig());
        map.put("系统信息", getSystemConfig());
        return map;
    }

}